package cn.iocoder.yudao.module.erp.dal.mysql.dpitem;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.erp.controller.admin.dpitem.dpitembj.vo.DpItemBjPageReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.dpitem.DpItemBjDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.dpitem.DpItemGzDO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.stream.Collectors;

/**
 * ERP北疆口岸制单货号详情 Mapper
 * @author 天使管理员
 */
@Mapper
public interface DpItemBjMapper extends BaseMapperX<DpItemBjDO> {

    default PageResult<DpItemBjDO> selectPage(DpItemBjPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<DpItemBjDO>()
                .eqIfPresent(DpItemBjDO::getNo, reqVO.getNo())
                .eqIfPresent(DpItemBjDO::getType, reqVO.getType())
                .eqIfPresent(DpItemBjDO::getCount, reqVO.getCount())
                .eqIfPresent(DpItemBjDO::getLenth, reqVO.getLenth())
                .eqIfPresent(DpItemBjDO::getWide, reqVO.getWide())
                .eqIfPresent(DpItemBjDO::getHigh, reqVO.getHigh())
                .eqIfPresent(DpItemBjDO::getInVolume, reqVO.getInVolume())
                .eqIfPresent(DpItemBjDO::getWeight, reqVO.getWeight())
                .eqIfPresent(DpItemBjDO::getDensity, reqVO.getDensity())
                .eqIfPresent(DpItemBjDO::getIsSplit, reqVO.getIsSplit())
                .eqIfPresent(DpItemBjDO::getDispatchNumber, reqVO.getDispatchNumber())
                .eqIfPresent(DpItemBjDO::getInventoryStatus, reqVO.getInventoryStatus())
                .eqIfPresent(DpItemBjDO::getLineDetails, reqVO.getLineDetails())
                .orderByDesc(DpItemBjDO::getId));
    }

    default List<DpItemBjDO> selectListByNo(String no) {
        System.out.println(11111111);

        System.out.println(selectList(DpItemBjDO::getNo, no));
        return selectList(DpItemBjDO::getNo, no);
    };

    default List<Long> selectListByNos(List<String> nos) {
        return selectObjs(new LambdaQueryWrapper<DpItemBjDO>()
                .in(DpItemBjDO::getNo, nos)
                .select(DpItemBjDO::getId)).stream()
                .map(obj -> (Long) obj) // 转换 Object 为 Long 类型
                .collect(Collectors.toList());
    };

    default int deleteByNo(String no) {
        return delete(DpItemBjDO::getNo, no);
    }

}